package br.com.duduso.conferencia_claro_desktop.utils;

import br.com.duduso.conferencia_claro_desktop.entity.Detalhe;
import br.com.duduso.conferencia_claro_desktop.enums.EnvioEmail;
import br.com.duduso.conferencia_claro_desktop.services.ConferenciasService;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.sf.jasperreports.engine.JRException;

/**
 *
 * @author duduso
 */
public class NewMain {

    public static void main(String[] args) throws IOException, JRException {

            ConferenciasService service = new ConferenciasService();

            File arquivoTotais = new File("/duduso/desenvolvimento/java/projetos/Conferencia_Desktop/conferencia-claro-desktop/Arquivos_Teste/Contas_Conferidas.xls");

            File arquivo01 = new File("/duduso/desenvolvimento/java/projetos/Conferencia_Desktop/conferencia-claro-desktop/Arquivos_Teste/LMP.xls");
            File arquivo02 = new File("/duduso/desenvolvimento/java/projetos/Conferencia_Desktop/conferencia-claro-desktop/Arquivos_Teste/WSP.xls");
            File arquivo03 = new File("/duduso/desenvolvimento/java/projetos/Conferencia_Desktop/conferencia-claro-desktop/Arquivos_Teste/WSUL.xls");

            List<File> arquivos = new ArrayList<File>();
            arquivos.add(arquivo01);
            arquivos.add(arquivo02);
            arquivos.add(arquivo03);

            try {
                    Map<Object[], List<File>> mapaAgrupado
                            = service.detalharEnviar(service.obterListaClientes(arquivoTotais).subList(0, 5), arquivos, EnvioEmail.MEU_EMAIL.getValue());
                    for(Entry<Object[], List<File>> value : mapaAgrupado.entrySet()){
                            ZipUtils.criarAquivoZip("/tmp/" + "Detalhamento_Contas_Claro_" + value.getKey()[2] + ".zip", value.getValue());
                            for(File file : value.getValue()){
                                    file.delete();
                            }
                    }
            } catch (Exception e) {
                    e.printStackTrace();
            }

    }

    private static List<Detalhe> getDetalhes(){
            List<Detalhe> detalhes = new ArrayList<Detalhe>();
            for(int i = 0; i < 100; i++){
                    detalhes.add(getDetalhe());
            }
            return detalhes;
    }

    /**
     * A Coluna de Valores Deve Ser a Coluna 'VALOR'
     * e Não a Coluna 'VALOR COBRADO'
     */
    private static Detalhe getDetalhe(){
            Detalhe detalhe = new Detalhe();
            detalhe.setCliente("EDUARDO SANTOS DE OLIVEIRA");
            detalhe.setDataLigacao("01/01/2000");
            detalhe.setHora("13:30");
            detalhe.setDescricao("TESTE DE EMISSÃO DO RELATÓRIO");
            detalhe.setDuracaoLigacao("00:25");
            detalhe.setTarifa("1.02");
            detalhe.setNumeroDiscado("3135956811");
            detalhe.setOrigemDestino("BETIM/BETIM");
            detalhe.setTelefone("(31)88093184");
            detalhe.setValorLigacao("15.05");
            return detalhe;
    }

    private static void gerarDetalhes(){

            ConferenciasService service = new ConferenciasService();
            
            try {
                    service.detalharEnviarClientes(getClientes(), getArquivosEntrada());
            } catch (Exception e) {
                    System.out.println("Erro ao Tentar Gerar Detalhes: " + e);
                    e.printStackTrace();
            }

    }
    
    public static List<Object[]> getClientes(){
            
            Object[] cliente1 = new Object[2];
            cliente1[0] = "LM MOTO";
            cliente1[1] = "37 8402-2625";
            
            Object[] cliente2 = new Object[2];
            cliente2[0] = "LM MOTO";
            cliente2[1] = "37 8424-0948";

            Object[] cliente3 = new Object[2];
            cliente3[0] = "LM BIKE";
            cliente3[1] = "37 8402-9284";

            Object[] cliente4 = new Object[2];
            cliente4[0] = "LM BIKE";
            cliente4[1] = "37 8405-4953";

            List<Object[]> clientes = new ArrayList<Object[]>();
            clientes.add(cliente1);
            clientes.add(cliente2);
            clientes.add(cliente3);
            clientes.add(cliente4);
            
            return clientes;
            
    }
    
    public static List<File> getArquivosEntrada(){
        
            File fileLMP  = new File("/duduso/desenvolvimento/projetos/Conferencia_Claro_Desktop/trunk/Arquivos_Teste/LMP.xls");
            File fileWSP  = new File("/duduso/desenvolvimento/projetos/Conferencia_Claro_Desktop/trunk/Arquivos_Teste/WSP.xls");
            File fileWSUL = new File("/duduso/desenvolvimento/projetos/Conferencia_Claro_Desktop/trunk/Arquivos_Teste/WSUL.xls");

            List<File> arquivosEntrada = new ArrayList<File>();
            arquivosEntrada.add(fileLMP);
            arquivosEntrada.add(fileWSP);
            arquivosEntrada.add(fileWSUL);
            
            return arquivosEntrada;
            
    }

}
